package com.company.笔试.判断链表是否有环;

import java.util.HashSet;

/**
 * @ClassName HasCycle
 * @Description TODO
 * @Author 11
 * @Date 2021/5/22 22:58
 * @Version 1.0
 */
public class HasCycle {

    public static void main(String[] args) {

    }

    public boolean hasCycle(ListNode head){

        HashSet<ListNode> set = new HashSet<>();

        while (head !=null){

            if (set.contains(head)){//利用set的唯一特性，如果set中含有改节点则发生循环引用
                return true;
            }else {//如果节点不在set中就放进去
                set.add(head);
            }
            
            head = head.next;
        }


//到最后如果链表遍历完成，没循环引用则返回false
        return false;
    }


}


class ListNode {
    int val;
    ListNode next;
    ListNode(int x) {
        val = x;
        next = null;
    }
}